package com.study.dao;

import com.study.pojo.Book;
import com.study.pojo.Chapter;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

/**
 * Book的dao等接口
 * @Author Miss kun
 * @Date 2020/9/21 19:06
 * @Version 1.0
 *
 */
public interface BookMapper {

    /**
     * 添加一本图书
     * @param books
     * @return
     */
    int addBook(Book books);


    /**
     * 通过书名和书的作者 获取图书id
     * @param book
     * @return
     */
    List<Book> getBookById(Book book);


    /**
     * 通过图书id进行链表查询章节
     * @param id 图书id
     * @return
     */
    List<Book> getChaptersByBookId(Integer id);


    /**
     * 随机抽取30b本书显示到首页中
     * @param number
     * @return
     */
    List<Book> getBooks(Integer number);

    /**
     * 通过图书id和章节id查询 章节信息
     * @param bookId
     * @param chapterId
     * @return
     */
    Book getChapterById(@Param("bookId") Integer bookId, @Param("chapterId") Integer chapterId);

    /**
     * 获取图书的总数
     * @return
     */
    Integer getCount();


    /**
     * 获取分页内容
     * @param type 根据图书的类别进行分类
     * @param page 当前页
     * @return
     */
    List<Book> getBookByPage(@Param("type") String type,@Param("page") Integer page);

    /**
     * 分类型获取图书的总数
     * @param type
     * @return
     */
    Integer getCountByType(String type);

    /**
     * 模糊查询
     * @param name
     * @param page
     * @param size
     * @return
     */
    List<Book> getBookByLike(@Param("name") String name,@Param("page") int page,@Param("size") int size);

    /**
     * 获取根据模糊查询所得数量
     * @param name
     * @return
     */
    Integer getCountByLikes(String name);

    /**
     * 获取所有图书的排行榜
     * @return
     */
    List<Book> getBookByRankList();

    /**
     * 根据图书类别获得排行榜
     * @param type
     * @return
     */
    List<Book> getBookRankByType(String type);



    /**
     * 删除一本书
     * @param id
     * @return
     */
    //int deleteBookById(@Param("bookId") Integer id);

    /**
     * 修改一本书
     * @param book
     * @return
     */
   // int updateBook(Books book);

    /**
     * 查找一本书
     * @param id
     * @return
     */
    //Books queryBookById(Integer id);

    /**
     * 查找所以的书
     * @return
     */
    //List<Books> queryByAllBooks();

    /**
     * 通过名字查询一本书
     * @param name
     * @return
     */
   // List<Books> queryBookByName(String name);

}
